iOS 18.0以降のiOSシミュレータで地図を表示すると真っ赤になってしまう問題

iOS 18.0以降のiOSシミュレータで地図を表示すると真っ赤になってしまう問題

Clock Icon2024.12.19

以前、「Xcode 16.0とiOS 18.0シミュレータの組み合わせでSafariViewControllerがフリーズしてしまう不具合を解消する」という記事で、Excluded Architectures設定が原因でSFSafariViewControllerUIImagePickerControllerが正常に動作しない問題について紹介した。

その後、Xcode 16.2での検証中に、Excluded Architectures設定が有効な場合、地図表示機能(MapKit)でも同様の問題が発生することが判明した。本記事では、この新たに発見された問題について解説する。

問題の概要

iOS 18.0以降のシミュレータ環境において、Excluded Architectures設定が有効な場合、地図表示が赤くなってしまう現象が発生する。なお、実機ではこの問題は発生しない。

検証用サンプルコード

以下は、MapKitを使用して皇居周辺を表示する最小限のサンプルコードである。このコードをiOS 18.0以降のシミュレータで実行した際に問題が再現する。

import SwiftUI
import MapKit

struct ContentView: View {
    @State private var region = MKCoordinateRegion(
        center: CLLocationCoordinate2D(latitude: 35.6844779, longitude: 139.7512224),
        span: MKCoordinateSpan(latitudeDelta: 0.05, longitudeDelta: 0.05)
    )

    var body: some View {
        Map(coordinateRegion: $region)
    }
}

#Preview {
    ContentView()
}

検証結果

iPhone 16 Pro / iOS 18.0のiOSシミュレータにて前述のサンプルコードを実行した。以下の表は、Excluded Architectures設定の有無による挙動の違いを示している。

Excluded Architectures設定があるとき Excluded Architectures設定がないとき
地図が真っ赤に表示される 正常に地図が表示される

この検証結果から、以下のことがわかった。

  • Excluded Architectures設定がある場合、地図が真っ赤に表示される。
  • Excluded Architectures設定がない場合、地図が正常に表示される。

まとめ

問題の整理

この問題は、以前の記事で紹介したSFSafariViewControllerUIImagePickerControllerの不具合と同様に、Excluded Architectures設定に起因していると考えられる。

  • SFSafariViewControllerを表示すると真っ白になり、アプリがフリーズする問題
  • UIImagePickerControllerを表示すると、アプリがフリーズする問題
  • MapKitで地図が赤色で表示される問題

これらの問題は、2024年9月16日にリリースされたXcode 16.0およびiOS 18.0以降のシミュレータ環境で発生しており、現時点(2024年12月時点)でも修正されていない。この設定については可能な限り早期に除去した方が良いだろう。

解決策

Excluded Architectures設定は、下図のようにプロジェクトのBuild Settingsの項目にある。この項目を削除することでこの現象は解決する。

20241219164422

しかし、前回の記事での述べた通り、アプリが依存しているサードパーティSDKがarm64に対応していない場合には問題が解決しない可能性がある。その場合は、SDK提供元にarm64対応を依頼する必要があるだろう。

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.